#include <bits/stdc++.h>
using namespace std;

const int N = 21, INF = 0x3f3f3f3f;

long long dp[N][N];
int g[N][N];
int x, y, bx, by;
int d[8][2] = {{-2, -1}, {-1, -2}, {1, -2}, {2, -1}, {2, 1}, {1, 2}, {-1, 2}, {-2, 1}};

int main()
{
    memset(g, 0, sizeof g);

    cin >> bx >> by >> x >> y;
    g[x][y] = -1;
    // 处理马能控制的区域
    for (int i = 0; i < 8; i++)
    {
        int dx = x + d[i][0], dy = y + d[i][1];
        if (dx >= 0 && dx <= 20 && dy >= 0 && dy <= 20)
        {
            g[dx][dy] = -1;
        }
    }
    // 初始化
    dp[0][0] = 1;
    for (int i = 1, j = 0; i <= bx; i ++)
        if (g[i][j] == -1) dp[i][j] = 0;
        else dp[i][j] = dp[i - 1][j];
    for (int j = 1, i = 0; j <= by; j ++)
        if (g[i][j] == -1) dp[i][j] = 0;
        else dp[i][j] = dp[i][j - 1];
    // 状态转移
    for (int i = 1; i <= bx; i ++) {
        for (int j = 1; j <= by; j ++) {
            if (g[i][j] == -1) dp[i][j] = 0;
            else {
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
            }
        }
    }
    cout << dp[bx][by] << endl;
    return 0;
}